package Tipos;
/**
 * Esta clase identifica los tipos de token que existen
 * Tipos de token:
 * Identificador,PalReser,OperaMate,OperaRela,OperAsig,
 * OperLogico,SignoPuntuacion,
 * Cadena,Literal,Entero,Real,
 * Puntero,
 * FinFichero
 */
public class TipoToken{
    
    public static enum tipoToken{IDENTIFICADOR,PALRESER,OPERAMATE,OPERARELA,OPERAASIG,
    OPERALOGI,SIGNOPUNTUACION,
    CADENA,LITERAL,ENTERO,REAL,
    PUNTERO,BOOLEAN,
    FINFICHERO
    }
    
    //public static tipoToken return
    
    private tipoToken tipo;
    
    public TipoToken(){
    
    }
    
    public TipoToken(tipoToken tipoTo){
        tipo=tipoTo;
    }
    
    /**
     * Crea un tipo de token a partir de un String, si el String no es un tipo
     * de token coge el tipo Identificador. A la hora de comprobar si el String
     * coincide con algún tipo de token no tiene en cuenta las mayúscualas ni las
     * minúsculas
     */
    public TipoToken(String tipoTo){
        try{
            tipo=tipoToken.valueOf(tipoTo.toUpperCase());
        }
        catch(IllegalArgumentException a){
            tipo=tipoToken.valueOf("IDENTIFICADOR");
        }
    }
    
    /**
     * Devuelve un String con el tipo de Token que es
     */
    public String getTipo(){
        return tipo.toString();
    }
    
    public static void main(String args[]){
        TipoToken token= new TipoToken("Literal");
        System.out.println(token.getTipo());
        
        TipoToken token2= new TipoToken("Inven");
        System.out.println(token2.getTipo());
    }
}
